// https : // iai.sh.cn/problem/921
// 未完工
#include <bits/stdc++.h>
using LL = long long;
using namespace std;
const int M = 1e5 + 3;
using LL = long long;

vector<int> adj[M];
bool vis[M], over[M];
LL ans;
/*
ans即为最小支配集得个数，over[x] 表示x点被覆盖   POJ 3659
初始化: vis, over, ans = 0
 */

void dfs(int u, int fa) {
  vis[u] = 1;
  bool flag = false;
  for (auto &son : adj[u]) {
    if (!vis[son]) {
      dfs(son, u);
      flag = flag || over[son];
    }
  }
  if (!over[fa] && !flag && !over[u]) {
    // 父亲结点没覆盖， 没有子结点被覆盖，本身没覆盖，3个条件
    // 对于一个既不属于支配集也不与支配集中的点相连的点来说，
    // 如果它的父节点不属于支配集，将其父节点加入支配集。
    over[fa] = 1;
    ans++;
  }
}

int main() {
  int n;
  cin >> n;
  for (int i = 2; i <= n; i++) {
    int fa;
    cin >> fa;
    adj[fa].push_back(i);
  }
  dfs(1, 0); // 调用dfs(1, 1), 选 1 为根节点
  cout << ans;
  return 0;
}
